﻿using System;
using Kaesoft.Hospedaje.Proxy.ServicioClienteReference;
using System.ComponentModel;
using System.Collections.Generic;

namespace Kaesoft.Hospedaje.Proxy
{
    /// <summary>
    /// Proxy para el servicio de cliente
    /// </summary>
    public class ProxyCliente
    {
        #region Campos Privados
        private static ServicioClienteClient _clientStatic;
        #endregion

        #region Constructores
        /// <summary>
        /// Crea una instancia del proxy
        /// </summary>
        static ProxyCliente()
        {
            _clientStatic = new ServicioClienteClient(EndpointNames.EndpointServicioCliente);
            _clientStatic.Endpoint.Behaviors.Add(new CustomInspectorBehavior());
            WcfProxyInvoker.UsuarioLogged += (o, e) => RefrescarCredenciales();
            WcfProxyInvoker.GrabarCredenciales(_clientStatic.ClientCredentials);
        }

        /// <summary>
        /// Crea una instancia del proxy
        /// </summary>
        public ProxyCliente()
        {
            WcfProxyInvoker.ClienteProxy = this;
            //Set client credentials for DMZ
            WcfProxyInvoker.UsuarioLogged += (o, e) => WcfProxyInvoker.GrabarCredenciales(_clientStatic.ClientCredentials);
            WcfProxyInvoker.GrabarCredenciales(_clientStatic.ClientCredentials);
        }

        public static void RefrescarCredenciales()
        {
            _clientStatic = new ServicioClienteClient(EndpointNames.EndpointServicioCliente);
            _clientStatic.Endpoint.Behaviors.Add(new CustomInspectorBehavior());
            WcfProxyInvoker.GrabarCredenciales(_clientStatic.ClientCredentials);
        }
        #endregion

        #region Metodos Publicos
        public static void GrabarLogAsync(string mensaje, string traceEvent, Action<AsyncCompletedEventArgs> method)
        {
            WcfProxyInvoker.InvocarMetodo(_clientStatic, "GrabarLogAsync", mensaje, traceEvent, method);
        }
        
        #endregion
    }
}
